home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / lib / mathlib / libconv / EXAMPLES / cex1.c next >
Encoding:
C/C++ Source or Header  |  1994-08-02  |  1.8 KB  |  41 lines

  1. /* ***************************************************************************
  2. *                                                                            *
  3. *     This test program illustrates 1D Finite Impulse Response (FIR) and     *
  4. *     Infinite Impulse Response (IIR) filters.                               *
  5. *                                                                            *
  6. *     We use here double precision versions DFIR1D and DIIR1D                *
  7. *                                                                            *
  8. ******************************************************************************
  9. *                                                                            *
  10. *     We first apply the IIR filter to an Impulse input                      *
  11. *     We use then the same filter as a FIR filter...                         *
  12. *     The final result an Impulse signal !                                   *
  13. *                                                                            *
  14. *************************************************************************** */
  15. #include "conv.h"
  16. #define TMAX    7
  17. main() {
  18.     int i;
  19.     double impulse[TMAX+1], filter[2], out1[TMAX+1], out2[TMAX+1];
  20.     impulse[0]=1.;
  21.     for(i=1; i<= TMAX ; i++)
  22.     impulse[i] = 0.;
  23.     filter[0]=1.;
  24.     filter[1]=.3;
  25. /* IIR Filter */
  26.     diir1d( impulse,1,0,TMAX+1,filter,1,0,2,out1,1,0,TMAX+1);
  27. /* FIR Filter */
  28.     dfir1d( out1,1,0,TMAX+1,filter,1,0,2,out2,1,0,TMAX+1,1.0,0.0);
  29.     printf("\n Input is an Impulse :\n");
  30.     print_array( impulse, TMAX+1);
  31.     printf("\n After application of an IIR filter:\n");
  32.     print_array( out1, TMAX+1);
  33.     printf("\nAfter a final FIR filter, output is an Impulse again:\n");
  34.     print_array( out2, TMAX+1);
  35. }
  36. print_array( double *ptr, int n) {
  37.     for( ; n>0 ; n--)
  38.     printf("%9.5f",*ptr++);
  39.     printf("\n");
  40. }
  41.